<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 函数参数解构赋值
        // 定义一个函数，接收一个对象参数，要求对象参数中必有两个属性a和b
        function demo({name="无名",age=20} = {}){
            console.log(name, age);
        }

        // 声明一个对象
        const ob = {name:"wangwu", age:20};
        // 调用demo函数, 将对象ob传进去
        demo(ob);
        demo({});
        demo();


        // function demo(s){
        //     console.log(s.name, s.age);
        // }

        // // 声明一个对象
        // const ob = {name:"wangwu", age:20};
        // // 调用demo函数, 将对象ob传进去
        // demo(ob);

        // 定义了一个求和函数，可以接收任何数量的参数
        function add(){
            // 任何函数内有都有一个参数对象arguments，
            // 里面存放了当前函数被调用时传递的所有参数信息

            // 将所有参数的值进行求和。
            let sum = 0;
            for(let i = 0; i < arguments.length; i++){
                sum += arguments[i];
            }
            return sum;
        }

        console.log(add(10,20,30));
        console.log(add(10,20,30,50,60,40));
        console.log(add(10,20,30,50,60,40,80,90));

        const arr = [1,2,3,4,5,6,7];

        console.log(add(...arr));

    </script>
</body>
</html>